home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gold Medal Software 2
/
Gold Medal Software Volume 2 (Gold Medal) (1994).iso
/
comms
/
commo552.arj
/
MACRO.DOC
< prev
next >
Wrap
Text File
|
1993-10-14
|
139KB
|
4,914 lines
{COMMO} (tm)
"A New Standard in Telecommunications"
by Fred P. Brucker
Part II
Macro Programming Guide
Release 5.52
October 14, 1993
(C)Copyright 1989-1993 Fred P. Brucker All Rights Reserved
The {COMMO} program and associated on-disk documentation are the property
of the author and may not be sold without permission. The Shareware
version may be distributed, unaltered and as a unit, via Electronic
Bulletin Board Systems.
SHAREWARE DISTRIBUTORS and clubs, please see the file VENDOR.DOC for
distribution guidelines.
THE AUTHOR DOES NOT GUARANTEE THIS PROGRAM TO BE FREE FROM DEFECTS AND MAY
NOT BE HELD RESPONSIBLE FOR LOSS CAUSED BY SUCH. YOUR USE OF THIS PROGRAM
CONSTITUTES YOUR ACCEPTANCE OF THESE TERMS.
{COMMO} is a trademark of Fred P. Brucker
DESQview is a trademark of Quarterdeck Office Systems
OmniView is a trademark of Sunny Hill Software
DoubleDOS is a trademark of SoftLogic Solutions, Inc.
HS/Link is a product of Samuel H. Smith
DSZ and GSZ are products of Omen Technology Inc.
MPt is a product of Matthew Thomas
LIST is a product of Vernon D. Buerg
The IBM PC is a product of IBM Corp.
MS-DOS is a trademark of MicroSoft Corp.
================================
{COMMO} Registration Information
================================
{COMMO} is a "SHAREWARE" product. You are entitled to evaluate it for
30 days. If it suits your needs and you would like to continue using
it, then you must pay the licensing fee. Please use the REGISTRATION
FORM on the next page.
When you REGISTER you will be licensed to use all future SHAREWARE
releases of {COMMO}. You will never have to pay an "update" charge.
You will also receive instructions for removing the Shareware Notice
at program startup. Registered users will receive priority support
on Bulletin Boards and CompuServe (see READ.ME).
Call or write for pricing information on MULTI-USER (SITE) and
DISTRIBUTION licenses. Discounts are given on quantities of 10 or more.
All prices shown are US DOLLARS. Please remit US FUNDS on US BANK only.
NET 30 TERMS will be accepted on purchase orders totalling $100.00 or
more.
The PRINTED MANUAL has an attractive new size and format for release
5.5 and includes an index. The DISKETTE has the latest {COMMO} release
plus the utilities listed in READ.ME (COMMOPNS, MOSTHOST, CMC, etc.).
For orders, inquiries and support for registered users, call MON-SAT,
9am-5pm, EASTERN time. If you get my answering machine, please try
again later (I cannot return long distance calls).
To register by E-mail on CompuServe, upload the completed Registration
Form as a message (text or binary).
MAILING ADDRESS: Fred P. Brucker
P.O. Box 141537
Columbus, OH 43214
VOICE TELEPHONE: (614) 326-1309
COMPUSERVE: 71021,356
INTERNET: 71021.356@compuserve.com
PAYMENT OPTIONS:
1) CHECK or MONEY ORDER: make payable to FRED P. BRUCKER.
2) CREDIT CARD: fill in the credit card information at the bottom of
the Registration Form (next page). Credit card orders may be mailed,
phoned or E-mailed (CompuServe only).
--------------------------------------------------------------------------
{COMMO} 5.52 SINGLE USER REGISTRATION FORM
Name _______________________________________________________________
Company name (if company address) ____________________________________
Address _______________________________________________________________
_______________________________________________________________
_______________________________________________________________
* All prices include shipping and handling * Number
of Copies
{COMMO} single user license with PRINTED MANUAL and DISKETTE:
Price in USA/Canada/Mexico ....................... $ 53.00 ____
OHIO residents (includes sales tax ) ............. 56.05 ____
All other countries .............................. 60.00 ____
{COMMO} single user license, with DISKETTE:
All countries .................................... 40.00 ____
OHIO residents (includes sales tax) .............. 42.30 ____
{COMMO} single user LICENSE alone:
All countries .................................... 35.00 ____
OHIO residents (includes sales tax ) ............. 37.02 ____
BBS sysops, students, seniors, low-income:
All countries .................................... 25.00 ____
OHIO residents (includes sales tax ) ............. 26.44 ____
License only; please state category ______________
>>>>>>> Specify diskette format (if applicable): 5.25" ____ 3.5" ____
Payment method: Check__ Money order__ Visa__ MasterCard__
Carte Blanche__ Diners Club__ JCB__ PO__
Enter total amount: $ ____________
INFORMATION FOR CREDIT CARD PURCHASES ONLY:
Card No. ________ ________ ________ ________ Expires ____/____
Cardholder signature _____________________________________________
Cardholder name __________________________________________________
Daytime telephone (_____) _____ _______
--------------------------------------------------------------------------
Answers to the following questions will help me serve you better in the
future:
How did you obtain {COMMO}? (If BBS, please give name and phone number)
________________________________________________________________________
In general terms, what do you use {COMMO} for?
________________________________________________________________________
________________________________________________________________________
What type of computer and modem do you use?
________________________________________________________________________
________________________________________________________________________
Comments / Questions ___________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
Thank you, and I hope you enjoy {COMMO}.
-6-
========
Contents
========
Programming {COMMO} Macros . . . . . . . . . . . . . . . . . . . . . . 9
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Macro Structure . . . . . . . . . . . . . . . . . . . . . . . . . 9
Macro Functions . . . . . . . . . . . . . . . . . . . . . . . . . 10
Macro Labels . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Macro Variables . . . . . . . . . . . . . . . . . . . . . . . . . 13
How to Use Variables . . . . . . . . . . . . . . . . . . . . . . . 14
Reserved Variables . . . . . . . . . . . . . . . . . . . . . . . . 15
Executing Macros . . . . . . . . . . . . . . . . . . . . . . . . . 16
Additional Macro Execution Rules . . . . . . . . . . . . . . . . . 16
Cancelling a Macro . . . . . . . . . . . . . . . . . . . . . . . . 17
A Macro Example in Detail . . . . . . . . . . . . . . . . . . . . 17
Description of Functions (Alphabetical) . . . . . . . . . . . . . . . . 20
ABAUd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
ALARm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
ASCIiup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
AUTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
BEEP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
BREAk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
CALL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
CALOok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
CAPMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
CAPTure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
CHATmode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
CLEAr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
COMPare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
CURSor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
DECRement . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
DIAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Marking Numbers for Dialing . . . . . . . . . . . . . . . . . 29
Automatic Resumption of Dialing . . . . . . . . . . . . . . . 30
Testing Success and Failure Results . . . . . . . . . . . . . 30
Handling Incoming Calls . . . . . . . . . . . . . . . . . . . 31
DISPlay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
DIVIde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
DOORway . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
DPARms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
EDIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
ELAPse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
EXECute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Using the Direct Switch: EXEC-D . . . . . . . . . . . . . . . 37
Using the Swap to Disk Switch: EXEC-S . . . . . . . . . . . . 37
EXECute Preview Mode . . . . . . . . . . . . . . . . . . . . 38
EXIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
FILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
GETString . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
GOLOok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
-7-
GOTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
HANGup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
HELP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
HOLD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
IFCArrier . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
IFCOndition . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
IFERrorlevel . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
IFEXist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
INCRement . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
INFOrm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
INITmodem . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
INPUt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
INSTring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
KEYStuff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
LENGth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
LIGHts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
LOCAlecho . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
LOOKfor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
MACLoad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
MACRo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
MARK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
MENU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
MULTiply . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
NOCArrier . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
NOOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
OFFLog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
PARMs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
PASSword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
PAUSe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
POPStack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
PRINtlog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
PUSHstack . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
RCLOse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
READ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
RETUrn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
ROPEn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
RTRAn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
RXMOdem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
RYMOdem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
SCREen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
SCROllback . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
SEND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
SETDial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
SETEsc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
SETGet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
SETLook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
SETVariable . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
SHELl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
SIGNal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
SOUNd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
SPDCtrl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
SPOCtrl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
SSLOok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
-8-
STATusline . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
STOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
STRAn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
SUBString . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
SXMOdem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
SYMOdem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
TOGGles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
UNMArk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
VIDEo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
VTCUr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
VTPAd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
WCLOse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
WINDow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
WOPEn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
WRITe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
For APPENDICES see Part I, COMMO.DOC. . . . . . . . . . . . . . . . . . 91
-9-
========== Programming {COMMO} Macros
IMPORTANT! Please read the next few pages before you attempt to write any
macros! The rules for writing {COMMO} macros are few in number, but must
be followed carefully.
Examples of more complex macro programming are given in the sample Macro
File COMMO.MAC, in the supplied file SAMPLES.MAC and in the Host Mode and
Guide macros. A macro from SAMPLES.MAC is discussed in detail at the end
of this section.
The following pages assume familiarity with {COMMO}'s key commands and with
other features of the program. Since many macro functions have
corresponding key commands, duplicate explanations will not be given here.
Refer to the description of the key command in Part I.
-----===== Overview
{COMMO}'s Macro File may contain any number of macros. The only size
limitation on the file is that the Dialing Directory and Macro File
combined must total 64k bytes or less.
Macros are "interpreted," which implies the following:
(1) Macros are not processed until they are executed.
(2) Only macros within the currently loaded Macro File are available
for use.
(3) Macros added or modified with the Internal Editor are available
immediately.
Alternate Macro Files may be loaded using the MACLoad function (the
original file is replaced and may be reloaded at a later time).
-----===== Macro Structure
Macros consist of a series of items enclosed in curly braces. Items may be
placed on the same line or on as many lines as desired. The file is
entirely free-form. Lines may be up to 255 characters in length and all
text outside the curly braces is commentary and is ignored by the Macro
Processor.
There are two types of items: "functions" and "labels."
Functions are action items. Some are equivalent to {COMMO} key
commands, such as DIAL, while others are unique to the macro language,
such as SETVariable.
-10-
Labels are macro entry points and may be placed anywhere within the
Macro File.
-----===== Macro Functions
Each macro function is described in detail later in this document. See
also Appendix J "Macro Functions Listed by Class."
The general form of any macro function is:
{name-switches arg1,arg2,...,argn}
name
The function name describes the action to be performed and
consists of four or more characters. Only the first four are
significant and case is ignored.
switches
These are used to alter the operation of a function. Each
switch is a single letter and may be followed by a numeric
value, usually "1" or "0" to indicate "yes" or "no"
respectively.
Switches have default interpretations when the numeric value
is omitted, or when the switch is not present.
Switches must be separated from the name with a hyphen (no
intervening spaces). They may be upper or lower case.
See individual function descriptions for details (note that
only certain functions have switches).
args
A SINGLE SPACE separates the arguments from the function
name and switches.
Individual arguments are separated with commas and may
contain no extraneous spaces (all spaces are significant).
NOTE: Curly braces may be represented within macro functions by using ^(
for { and ^) for }.
-11-
Examples:
{send Hi, how are you?}
This function sends the string "Hi, how are you?" to the modem.
SEND has only one argument -- the string to send out. Since the
string is the last argument, it may contain commas and spaces.
Quotes are not used to define strings.
{ifcon-LE label1,label2}
The IFCOndition function tests for conditions set by other
functions, such as COMPare. Here two switches are present,
telling {COMMO} to test for less than or equal:
L Test for "less than."
E Test for "equal."
The two arguments are labels to GOTO depending on the conditions.
Notice that "name-switches" may be written in a number of
different ways:
ifco-LE ifcondition-EL ifcond-LE
{asci-S0E1 pathname}
The ASCII Upload function will send the file indicated by
"pathname." The switches override current settings and tell
{COMMO}:
S0 Do NOT strip linefeeds.
E1 DO expand blank lines (may also be written "E").
{sound} {sound yes}
The first function will TOGGLE Master Sound ON/OFF (since there
is no argument). The second will turn the sound ON.
One very important function is the STOP function. It is used to terminate
macro processing and may appear in either its long form or short form:
... {stop} long form
... {} short form
Macro processing continues until a STOP function is executed. Be sure to
use one or processing will continue into the next macro in the Macro File!
-12-
-----===== Macro Labels
Labels are identifiers consisting of one or more characters. When a label
is defined, it must be preceded by a colon. References to labels, such as
{goto label}, do not require the colon.
IMPORTANT! {COMMO} always searches for labels from the beginning of the
Macro File. This means that if a label is duplicated within the file, the
first occurrence will be used.
Only the first eight characters in a label are significant. Case is
ignored. All characters are allowed in labels except the following:
colon ":"
space " "
comma ","
slash "/"
curly braces "{" or "}"
Examples:
{:mailrun} {call login} ...
{:start-here} {:another.entry} {send Begin now!} ...
A number of three character labels are reserved and are called "key-
labels." When the corresponding key is pressed from the Terminal Screen,
{COMMO} will look for the key-label in the current Macro File. If the key-
label is found, macro processing will begin at that location.
Any default key assignment may be overridden using a key-label. For
example, pressing Alt-D normally enters the Dialing Directory. But suppose
this line is in the Macro File:
{:ald} {clear} {}
Now pressing Alt-D will clear the screen.
See Appendix H "Table of {COMMO} Key-labels" for a complete list of keys
that may be assigned.
-13-
-----===== Macro Variables
{COMMO} maintains a String Variable Space in which variables appear in the
form:
name,string
name
An identifier consisting of one or more characters of which
only the first eight are significant. Case is ignored. The
following are the ONLY valid characters that may be used in
a variable name:
"A" through "Z"
"a" through "z"
"0" through "9"
"_" underline.
All other characters will terminate the name.
string
A text string. The string must not contain any control
characters below ASCII 28. If a string is set to null (0
characters), it is deleted from variable space.
NOTE: Any variable not defined is considered to be null.
Strings consisting of only the digits 0-9 and representing a
decimal number from 0 to 4,294,967,295 (2^32-1) are also
numeric variables. There is no other difference between
string and numeric variables.
The maximum length of strings is 240 characters.
The String Variable Space may be viewed from within the Macro Processor
window by pressing "V". The amount of unused string space is shown at the
bottom of the screen.
Once a variable is defined, it remains in String Variable Space until it is
redefined or deleted (set to null). Therefore variables should be deleted
or re-used to prevent String Variable Space from becoming full.
The default size of String Variable Space is 3072 bytes, but it may be
adjusted with the "/v" command line switch at program startup. The valid
range is from 512 bytes to 65535 bytes. See also "Command Line Options" in
Part I.
-14-
---------- How to Use Variables
{COMMO} variables are set (or "defined") by various macro functions and by
variable strings in a Dialing Directory entry.
Variables are used (or "referenced") in macro function arguments and in the
telephone number field of the Dialing Directory.
See also "Alt-D Dialing Directory" in Part I.
When a variable name appears, the string assigned to the name is
substituted for the name. If the variable is null, then the name is
replaced with 0 characters. {COMMO} will expand the variables in a macro
function before processing it.
In order to distinguish variable names, they must be preceded with a
percent sign "%" (use two percent signs if a percent sign is needed in the
data).
The end of the variable name is indicated with another "%" or with the
first character that is not allowed in a name (see list of characters
above).
A variable definition example:
{setvar animal,Elephant} or {setvar %animal,Elephant}
Notice that the "%" is not required (but is permitted) when the
variable name is the first argument of a function that defines,
modifies or tests the value of a variable. Other such functions
include INPUt, GETString, INCRement, DECRement, COMPare,
SUBString, INSTring, READ.
If the variable name in this situation needs to be a variable,
then use two percent signs:
{setv %%animal,Elephant}
Variable usage examples:
{setvar animal,Elephant}
{send %animal}
Sends "Elephant" to the modem.
{send animal}
Sends "animal".
{send %animal%s are large animals}
Sends "Elephants are large animals". Note that the trailing "%"
is required here.
{setvar animal,Elephant}
-15-
{setv creature,animal}
{send creature}
Sends "creature".
{send %creature}
Sends "animal".
{setv %%creature,Giraffe}
{send %animal}
Sends "Giraffe".
IMPORTANT! Variables may NOT be substituted within the function name or
switches. They may be substituted anywhere else, even for the commas
separating arguments.
---------- Reserved Variables
Certain variables have fixed names so that {COMMO} can find them whenever
they are needed. The names of these variables begin with an underline
character "_". There are two types of reserved variables: "user-defined"
and "built-in" (see Appendix I "List of Reserved Variables" for a complete
list).
USER-DEFINED reserved variables are defined in the same way that you define
ordinary variables -- in the Setup File using SET, or in a macro using
functions such as SETVariable, INPUt, etc. These variables define strings
used by certain program features. For example, the pathname of the Usage
Log is defined in the Setup File as follows:
{set _uselog,c:\commo\commo.log}
BUILT-IN variables are defined by {COMMO} based on current system
parameters. Examples are:
_cap
Current Capture File pathname
_tim
Current time of day
Any variable that starts with the same four characters as a built-in
variable ("_" plus the next three) will be considered the same variable.
For example "_pas" may be written "_password" and "_yea" may be written
"_year".
{COMMO} will always search String Variable Space first when looking up the
value of any variable. This allows built-in variables to be overridden,
but only when using their four character minimum names. For example, to
override the serial port number, you must use "_por", not "_port".
See Appendix I for a complete list of reserved variables.
-16-
-----===== Executing Macros
Macro execution may be started in any of the following ways:
1) Open the Macro Processor window by pressing Alt-M. Position the
Selector Bar at the desired starting point and press [Enter]. The
Macro Processor will begin processing at the first macro label or
function on the line.
NOTE: Macros started with the Selector Bar do not need macro labels
and may be started at any point within the macro.
2) If a macro label is also a key-label, then you may press that key from
the Terminal Screen. Note that if the same key-label appears more
than once, the first occurrence will be used.
3) A macro may be linked to a Dialing Directory entry (Linked Macro). In
this case {COMMO} will GOTO the macro when a connection is established
with that system (or optionally CALL it, see the DIAL function).
4) A startup macro may be specified in the Setup File using the
"{mac=label}" item.
5) A startup macro may be specified on the command line with the switch
"/:label". This will override the Setup File macro.
6) A macro may be an argument of another function such as CALL, GOTO,
DIAL or SETLook.
Some macro functions show their current action on the Status Line at the
bottom of the screen. In addition, a "face" character in the middle of the
Status Line indicates that a macro is executing.
-----===== Additional Macro Execution Rules
Characters may be typed to the serial port during functions that wait
(LOOKfor, GETString, PAUSe, HOLD, etc.). Command keys will be ignored
during macro processing.
The Macro Processor will execute functions IN SEQUENCE until one of the
following conditions occurs:
1) A CALL, GOTO, RETURn, STOP, EXIT, etc. is encountered.
2) Control is transferred to an alternate macro from certain functions
when a special condition occurs. An example of this is the SETLook
function. The alternate will execute when a subsequent LOOKfor times
out.
-17-
3) A macro error occurs. This will bring up the Macro Processor window
with the Selector Bar on the problem line. The macro will be
terminated.
4) The end of the Macro File is reached.
-----===== Cancelling a Macro
The [Esc] key is used to terminate macro processing. To type an <esc> code
(ASCII 27) to the remote during macro execution (without terminating the
macro), press Ctrl-[ (Ctrl + left bracket).
Current function execution may be terminated by pressing [Ctrl-Break]. For
example, this can be used to terminate a LOOKfor, PAUSe or HOLD
prematurely. Macro processing will advance to the next function.
If a macro contains a function that brings up a {COMMO} window (Dialing
Directory, Capture File Options, etc.), then [Esc] will exit the window and
processing continues with the next function. To terminate macro processing
from a window, press [Ctrl-Break].
NOTE: The SETEsc function may be used to help prevent accidental
termination of macros.
-----===== A Macro Example in Detail
The following macro example from SAMPLES.MAC can be used to log in to many
types of Bulletin Board Systems. This is a Linked Macro, so the label
"login" would appear in the Dialing Directory macro field for each system
that uses it. When you dial and connect to one of the systems, {COMMO}
will automatically GOTO the macro.
The subroutine "gls" (generic login subroutine) can also be called from
macros that perform mailruns and other BBS operations.
Note that labels and functions may be placed side by side on the same line
(up to 255 characters). For purposes of this example each item is placed
on its own line.
The main routine at "login" performs some initial functions and then calls
the subroutine at "gls". The subroutine looks for various prompts,
responds to them and terminates after responding to the "password" prompt.
{:login}
The entry point. All labels begin with a ":".
{capture y,c:\commo\commo.cap}
-18-
"y" means open the Capture File. The pathname of the file is
specified here, otherwise the current file would be opened.
{asci ,}
Set ASCII Upload to "no pacing."
{call gls}
CALL the macro at "gls". When the subroutine executes a RETUrn,
control will come back here.
{}
STOP and resume manual operation in the Terminal Screen. Without this
STOP processing would continue into subsequent macros. Remember that
labels are "passed over" during sequential macro processing.
{:gls}
The entry point of the "gls" subroutine.
{setlook 60,hng,10,|}
This function specifies parameters that go into effect whenever a
LOOKfor executes. It tells the Macro Processor to wait up to 60
seconds for the string (or strings) and to GOTO the label "hng" if
none of the strings appear within that time. The timer is restarted
each time a LOOKfor begins to execute.
The SETLook also specifies that a "|" (carriage return) should be sent
to the modem whenever 10 seconds have elapsed and no characters are
received. This is used to respond to prompts that are not explicitly
specified in SSLOoks/CALOoks/GOLOoks/LOOKfors (e.g., "Press any key to
continue").
Use this latter facility with care since a BBS may spend time
processing and not actually be expecting input from the caller. The
carriage returns sent will accumulate and be used to satisfy later
prompts, causing things to get out of "sync." Adjust the 10 second
timeout as needed.
{setv ss_r,~|}
{setv ss_yr,~y|}
Variables are set for some common responses. They will be used later
by SSLOok functions. For convenience, these variables may be defined
in the Setup File (using the "set" keyword).
SSLOoks, CALOoks and GOLOoks store strings to look for, but do not
wait for the strings (only a LOOKfor can do the actual waiting).
{:li1}
{sslo ss_r,(enter)}
{sslo ss_yr,graphics (enter)}
{sslo ss_yr,is this correct}
The SSLOoks will send the strings in the variables when the respective
targets are received. The looking for all of the stored strings then
resumes.
-19-
{calo li1,li2,first name}
{calo li1,li3,last name}
CALOoks will CALL the second label if the target string appears (the
LOOKfor is cancelled). When the macro executes a RETUrn, control goes
to the first label where all of the strings can be set up again. Note
that CALOoks are used here for demonstration. SSLOoks could be used
as well (and probably should be).
{golo li1,;passwor}
A GOLOok will set up a string and GOTO the label if the string appears
(only one label is used). In this example the specified string is to
be ignored. This was needed for a BBS that used the string
"first;last;password" prior to the actual password prompt.
{lookfor password}
This is where the actual "looking" takes place. Remember that
SSLOoks, CALOoks and GOLOoks only cause strings to be stored but do
not actually wait for the strings.
The LOOKfor will wait for the string specified and also any other
stored strings (up to 16 total). If the string in the LOOKfor
appears, control passes to the next macro function.
"password" is assumed to be the last prompt in the login sequence.
{send ~%_pas|}
Control then passes here and the string is sent to the modem. The
tilde (~) causes a half-second delay before sending the password. The
password in the Dialing Directory entry was stored into the built-in
variable "_pas" when dialing began.
Finally, a carriage return (|) is sent.
{return}
This will RETUrn to the "login" macro.
{:li2}
{send ~Fred|}
Response to "first name".
{return}
{:li3}
{send ~Brucker|}
Response to "last name".
{return}
-20-
========== Description of Functions (Alphabetical)
The purpose of this section is to show the syntax of each function and the
meaning of its arguments through examples. All functions are listed here,
but details for functions which are also default key commands are found in
Part I under "{COMMO} Key Commands."
Function names are shown with their four-letter abbreviations in uppercase.
For consistency, the following conventions are used in many functions:
"y" or "yes" is used to indicate "yes", "on", "open", etc.
"n" or "no" is used to indicate "no", "off", "close", etc.
=== ABAUd ===
Default key: none
Description: Set AutoBaud toggle.
Examples:
{abaud}
Toggle AutoBaud on/off
{abaud y}
Turn on AutoBaud
{abaud n}
Turn off AutoBaud
=== ALARm ===
Default key: none
Description: Ring the alarm.
Examples:
{alarm}
Ring alarm, use ring count in Setup File.
{alarm 2}
Ring alarm 2 times.
{COMMO} will wait until the alarm has stopped ringing before proceeding to
the next macro function (the alarm may be terminated early by pressing a
key).
-21-
=== ASCIiup ===
Default key: Alt-A
Description: Upload an ASCII (text) file.
General form:
{ASCIiup pathname[\],pace}
pathname
The complete path and filename (if the path is absent, the
current directory will be used).
If a path only is used (signified by a "\" at the end) the
ASCII Upload window will open, prompting you to enter the
filename.
pace
The pacing character to be used.
Switches:
E1 or E
Expand blank lines. A space will be sent when a zero-character
line is encountered.
E0
Do not expand blank lines.
S1 or S
Strip linefeeds from outgoing text.
S0
Do not strip linefeeds.
If a switch is absent, the current setting of the toggle will be
used. The toggles can be set in the Setup File or by using the
Alt-T key command.
Switches apply to the current function only and do not affect the
settings of the toggles.
Examples:
{asci}
Open ASCII Upload window.
-22-
{asci-S}
Open ASCII Upload window, strip linefeeds when file is sent.
{asci %uldir%\}
Open ASCII Upload window, prompt with the current value of the
variable "uldir".
{asci c:\msgs\file.xyz,:}
Upload "file.xyz." Use ":" for pacing.
{asci-E0 c:\msgs\file.xyz}
Upload "file.xyz." Use current pacing character, do not expand
blank lines.
{asci c:\msgs\file.xyz,}
Upload "file.xyz." Do not use pacing.
{asci ,?}
Set current pacing character to "?"
{asci ,}
Set current pacing to "no" pacing.
The pacing character may be entered according to the rules shown in
Appendix D. For example, "^m" or "|" may be used to represent the carriage
return.
=== AUTO ===
Default key: none
Description: Maintain Auto Receive strings.
General form:
{AUTO label,string}
label
Label to GOTO when the string is received.
string
String to look for, may be up to 32 characters.
Examples:
{auto}
Clear all Auto Receive strings.
{auto zmodem,^XB00}
Zmodem Auto Receive string.
-23-
Note that up to 16 Auto Receive strings may be in effect at the same time
(including any strings defined in the Setup File).
Use this function with no arguments to clear all strings when necessary.
See also "TIPS on creating LOOKfor strings" under LOOKfor.
=== BEEP ===
Default key: none
Description: Sound a beep.
Example:
{beep}
No arguments.
=== BREAk ===
Default key: Alt-B
Description: Send a break.
Switches:
Tn
Set break duration in system clock ticks. "n" may range
from 1 to 999. There are 18.2 clock ticks per second.
T0 or T
Set break duration to 18 clock ticks (default).
Examples:
{break}
One second break.
{break-t9}
One-half second break.
{break-t55}
Three second break.
=== CALL ===
Default key: none
Description: Execute a macro subroutine.
-24-
Example:
{call abc}
Execute subroutine abc.
CALL will push the location following the CALL function onto the macro
stack, then it will GOTO the label given in the argument. When a RETUrn is
executed, the location will be popped and control will return to the
function following the CALL.
Note that macros may be nested up to 32 deep.
See also RETUrn, PUSHstack, POPStack.
=== CALOok ===
Default key: none
Description: CALL a label when a string appears.
General form:
{CALOok label1,label2,target}
label1
The location to return to after label2 is CALLed.
label2
The label to CALL when the target is received from the
serial port.
target
The ASCII string to look for. The string begins following
the "," and is terminated by the "}".
CALOok is used in conjunction with the LOOKfor function. It sets up an
additional string to look for. When the target string appears, a CALL is
made to "label2." When the routine executes a RETUrn, control will pass to
"label1". This is equivalent to:
{call label2} {:label1} ...
See LOOKfor for details, examples and tips on using CALOok.
See also: SSLOok, GOLOok, SETLook.
=== CAPMode ===
Default key: none
Description: Set Capture Mode.
-25-
Examples:
{capmode screen}
Set Capture Mode to SCREEN.
{capmode filter}
Set Capture Mode to FILTER.
{capmode raw}
Set Capture Mode to RAW.
See also CAPTure.
=== CAPTure ===
Default key: Alt-1
Description: Capture File Options.
Switches:
N1 or N
Do not wait for a keypress if the disk fills up while capturing
(a message is displayed for several seconds). The setting
remains in effect until the Capture File is closed.
NOTE: This switch is effective only on a CAPTure function that
successfully opens a Capture File.
N0
Wait for Esc to be pressed if the disk fills up (default).
Examples:
{capture}
Open Capture File Options window.
{capture y}
Open current Capture File.
{capture n}
Close current Capture File.
{capt y,c:\commo\file.xyz}
Open indicated Capture File.
{capt n,c:\dl\newfile.cap}
Close current Capture File, set new file as indicated.
The current Capture File will always be closed when a new file is opened.
-26-
IMPORTANT! If the disk fills while capture is open, a "disk full" message
will appear (see the "N" switch above) and the file will be closed. The
built-in variable "_dfc" will be set to 1.
See also CAPMode.
=== CHATmode ===
Default key: Alt-- (Alt minus)
Description: Set Chat Mode toggle.
Examples:
{chat}
Toggle Chat Mode on/off.
{chat y}
Turn on Chat Mode.
{chat n}
Turn off Chat Mode
=== CLEAr ===
Default key: Alt-C
Description: Clear Terminal Screen to default colors.
Example:
{clear}
No arguments.
=== COMPare ===
Default key: none
Description: Compare a string or numeric variable.
General form:
{COMPare name,string}
name
The name of a variable.
string
A string of ASCII characters.
-27-
Examples:
{comp pword,aardvark}
Test if the variable "pword" is set to "aardvark."
{comp pword}
Test if "pword" is null.
{comp pword,}
Test if "pword" is null.
{comp nmbr,5}
Compare a numeric variable.
{comp abc,%xyz}
Test if the variable "abc" is equal to the variable "xyz."
A numeric variable is a string of ASCII digits, 0-9, forming a positive
integer. If the number is outside the allowed range or contains non-
numeric characters, the results of the compare will be unpredictable.
COMPare will set flags which can be tested with the IFCOndition function.
The Condition Flag will be set to "true" if the two arguments are
identical strings (case is ignored). Otherwise it will be set to
"false."
The Numeric Flag will be set to "equal", "less than" or "greater
than." This flag is unpredictable unless both arguments are valid
numeric variables.
A variable may be tested for being null (no entry in variable space) by
omitting the second argument (or by comparing to a null variable).
See also IFCOndition.
=== CURSor ===
Default key: none
Description: Terminal Screen cursor on/off.
Examples:
{cursor}
Toggle Terminal cursor on/off.
{curs y}
Turn on Terminal Screen cursor.
{curs n}
Turn off Terminal Screen cursor.
-28-
=== DECRement ===
Default key: none
Description: Subtract a number from a numeric variable.
Examples:
{decr count}
Subtract 1 from the variable "count".
{decr apples,200}
Subtract 200 from "apples".
The default for the second argument is 1.
If the result is less than 0 or if either argument is out of range, then
the variable will be set to the string "ERROR".
If the variable is not numeric, the results will be unpredictable.
See also INCRement.
=== DIAL ===
Default keys: Alt-D, Alt-N
Description: Open Dialing Directory, dial marked systems.
General form:
{DIAL tries,label1,label2}
tries
The maximum number of dialing tries. If no connection is
established when the try count is exhausted, the macro in
the second argument will be started. May be 0 to 999. "0"
means unlimited. Default is 0.
label1
A macro to GOTO if the try count in the first argument is
exhausted. If no macro is specified or if the macro label
is invalid, control will pass to the next function. Default
is none.
If the "C" switch is used, the macro will be CALLed. When a
RETUrn is executed, control will return to the DIAL
function.
-29-
label2
A macro to GOTO when a response is matched during the Inter-
dial Delay. Response strings are listed in the reserved
variable "_dialir" and are usually defined in the Setup
File.
If the "C" switch is used, the macro will be CALLed. When a
RETUrn is executed, control will return to the DIAL
function.
Switches:
C1 or C
Specifies that macros will be started via CALL (instead of GOTO).
When the macros execute a RETUrn, control returns to the DIAL
function and Multi Number Dialing will resume.
The "C" switch applies to the Linked Macro (from the Dialing
Directory), the "tries exhausted" macro and to the Inter-dial
Delay macro.
C0
Start dialing macros via GOTO (default).
Examples:
{dial}
Open Dialing Directory window (similar to Alt-D).
{dial ,}
Multi Number Dial (similar to Alt-N).
{dial 25,abc}
Multi Number Dial with try count.
{dial-C ,}
Multi Number Dial, CALL Linked Macros.
{dial-c ,,inter}
Multi Number Dial with Inter-dial Delay macro.
---------- Marking Numbers for Dialing
Numbers may be marked in one of several ways:
1) Manually in the Dialing Directory window.
2) By placing Dialing Strings on the {COMMO} command line.
3) Using the MARK macro function.
Marked numbers will be redialed in sequence. If a connection occurs and a
valid Linked Macro is specified in the Dialing Directory, the macro will be
-30-
started via GOTO (unless the "C" switch is present). If no macro is
specified in the Dialing Directory, control is passed to the next function.
If no numbers are marked when executing the DIAL, control will pass to the
next function.
---------- Automatic Resumption of Dialing
Here are two methods for resuming at the end of a Linked Macro. Both allow
multiple systems to be called without operator intervention.
1) Use the "C" switch on the DIAL function. Each Linked Macro
should end with a RETUrn which will transfer control back to the
DIAL. When all numbers have been called, control will pass to
the function following the DIAL.
2) At the end of each Linked Macro (after logging off), GOTO a macro
such as this:
{:nocar} {pause 1} {ifcarrier nocar} {dial ,} {}
This ensures that carrier has dropped before DIALing the next
number. The PAUSe allows data to display on the screen while
waiting for carrier to drop.
---------- Testing Success and Failure Results
Details about a successful or failed dialing attempt are available in
several reserved variables (see Appendix I "List of Reserved Variables" for
complete descriptions):
_dtc
Dialing termination code
_dialrt
Dialing response text
_mod
Speed reported by modem (normally in the CONNECT or CARRIER
response)
After a successful attempt the variables "_dialrt" and "_mod" may be tested
in your Linked Macro. For example, if you expected a high-speed connect
and the speed reported was 2400 or 1200, then you may want to hang up and
try again later.
You can get control after each failed attempt by using "DIAL 1", with or
without a macro. For example:
-31-
1) {dial-c 1,nocon} ...
The Linked Macro and the "no connect" macro will be CALLed (the
"C" switch). The variables "_dtc" and "_dialrt" may be tested in
the macro at "nocon".
2) {dial 1} ...
Control will pass to the next function if a dialing attempt fails
or when no more systems are marked (test "_dtc" to determine
which).
If the testing indicates that the system should not be dialed again (e.g.,
it did not answer, _dtc = 3), the UNMArk function can be used with the "L"
switch to unmark the last number dialed: {unmark-l}.
---------- Handling Incoming Calls
Most modems return the string "RING" when a call comes in. If this happens
during the Inter-dial Delay, you may choose to stop dialing (to answer a
voice call) or to send a brief message to a modem caller (during a BBS
event, for example).
Use "label2" on the DIAL function to process responses during the Inter-
dial Delay. For example:
{dial ,,incoming}
The macro at "incoming" will execute if the modem sends an Inter-dial Delay
response string (these are normally defined in the Setup File with the
"_dialir" variable).
See also: SETDial, MARK, UNMArk.
=== DISPlay ===
Default key: none
Description: Display a string to the screen.
General form:
{DISPlay row,col,attr,string}
row
The row where the string will display.
col
The column where the string will display.
-32-
attr
The attribute (colors) of the string.
string
The text of the string (no quotes).
Examples:
{display 12,20,17,Hello!}
Display "Hello!" at row 12, column 20. Colors are white on blue.
{disp ,,,Hello, again.^m^j}
Display "Hello, again." at the current cursor using the current
attribute, followed by a cr/lf.
{disp 3,40}
Position the cursor at row 3, column 40.
TIPS on using DISPlay:
> The attribute is specified in the same manner as the colors in the
Setup File (press F7 in the Internal Editor to display the Color
Chart).
> Setting background colors to high intensity values will cause blinking
(for example, using "9" instead of "1" will still give a blue
background but the foreground character will blink).
> After the string is displayed, the previous Terminal Screen attribute
will be restored.
> Conversion is performed on the string according to the rules in
Appendix D.
=== DIVIde ===
Default key: none
Description: Divide a numeric variable by a number.
Example:
{divi space,1024}
Divide "space" by 1024.
The divisor (second argument) is limited to 65535 (default is 1).
The named variable will be set to the quotient, the built-in variable
"_rem" will be set to the remainder.
If the divisor is zero or if either argument is out of range, then the
variable will be set to the string "ERROR".
-33-
If the variable is not numeric, the results will be unpredictable.
=== DOORway ===
Default key: Alt-=
Description: Toggle Doorway Mode.
Switches:
S1 or S
Status Line on when entering Doorway Mode.
S0
Status Line off (default).
M0
Do not display Doorway enter/exit messages.
M1
Display enter/exit messages (default).
Examples:
{doorway}
Toggle Doorway Mode on/off.
{door-S}
Status Line on when entering Doorway Mode.
{doorway-M0}
Do not display enter/exit messages.
The "S" switch is ignored when exiting Doorway Mode (the Status Line will
be restored to its prior state).
=== DPARms ===
Default key: Alt-P
Description: Set Default Dialing Terminal Parameters
General form:
{DPARms speed,format,comport,terminal-type,delay}
-34-
speed
The bps rate: 2400, 9600, etc.
format
The data format: 8n1, 7e1, etc.
comport
The serial port number: 1, 2, 3 or 4.
terminal
The terminal-type: A, V or T.
delay
The inter-character delay factor: 0-999.
Examples:
{dparms 2400,8,1,,20}
Set 2400 bps, 8n1, Com1, delay=20.
{dparms ,,4,V}
Set Com4 VT102.
{dparms 19200,7o1}
Set 19200 bps, 7o1.
IMPORTANT! Omitted parameters are not changed.
These are the parameters that are set whenever a number is DIALed. Any of
them may be overridden in the Dialing Directory entry.
See also PARMs.
=== EDIT ===
Default key: none
Description: Edit an external file.
Example:
{edit c:\autoexec.bat}
Edit AUTOEXEC.BAT file.
EDIT may be used to edit any text file up to 64k in length. The rules are
the same as for editing a support file with the Internal Editor.
TIPS on using EDIT:
> Control characters (below ASCII 28) may not be typed.
-35-
> Any data beyond the last cr/lf pair will be removed prior to editing.
A cr/lf pair will be added, if necessary, to ensure at least one line
in the file.
> The file will be saved unconditionally when Alt-F is pressed or
conditionally (if changes were made) when Esc is pressed. The file is
"saved in place" (no backup).
=== ELAPse ===
Default key: none
Description: Reset the elapsed timer to 0 minutes.
Example:
{elap}
No arguments.
The elapsed timer is automatically reset whenever dialing begins and when a
connection is made with a remote system.
=== EXECute ===
Default key: none
Description: Execute a DOS command.
Switches:
A1 or A
Sound the alarm at the end of command execution.
A0
Do not sound the alarm (default).
D1 or D
Execute an external program directly, without use of the command
processor (see details below).
D0
Use the command processor (default).
N1 or N
Do not clear the screen before execution. This is useful when
running programs that clear or rewrite the screen. Also for
simple DOS functions like changing directories, renaming files,
etc.
N0
Clear the screen (default).
-36-
S1 or S
Swap to Disk before executing the program (see details below).
S0
Do not swap to disk (default).
W
Wait for a key press before restoring the Terminal Screen. This
is useful if you need to see the results of the command
execution.
Wn
Wait for "n" seconds, "n" may range from 0 to 999. Press a key
to cancel the wait.
Note: Default (no "W" switch) is no wait.
Examples:
{exec-AW3 dsz port %_por speed %_spe sz %uldir%\%file}
{COMMO} will prepare the DSZ command by expanding the "%"
variables, then call DOS to execute the program.
See the section "Macro Variables" for complete details on
variable substitution.
The alarm will sound at completion (the "A" switch) and {COMMO}
will wait for three seconds (the "W3" switch) before restoring
the Terminal Screen.
{execute-DN c:\utils\list.com %_cap}
The LIST program will be directly executed with the current
Capture File pathname as a command line argument. The screen
will not be cleared (LIST will rewrite the screen). {COMMO} will
return immediately to the Terminal Screen when LIST exits.
The EXECute function enables you to "build" a command to be executed by
DOS. The DOS command processor (COMMAND.COM) is normally used (see below),
which implies that you may specify any command as you would type it from
the DOS prompt.
Thus you can execute batch files and internal DOS commands (REN, DEL,
etc.). Also you can omit command paths and extensions (if the command is
in your PATH or in the current directory).
Character conversion is performed in the EXECute function. This enables
you to specify control characters. For example:
{exec echo ^L> prn} Send a formfeed to the printer
See Appendix D for details on conversion. Note that the vertical bar "|"
is NOT translated to a carriage return in the EXECute function.
-37-
Key codes may be placed in the keyboard buffer prior to EXECute using the
KEYStuff function.
---------- Using the Direct Switch: EXEC-D
Use this switch to execute .EXE and .COM programs without the use of the
command processor (usually COMMAND.COM).
The program's Exit Code (called ERRORLEVEL in batch files) is saved and may
be tested with the IFERrorlevel function. The Exit Code is also available
in the variable "_err".
There are several advantages to using the "D" switch:
1) Only the memory needed to run the program is required (the command
processor requires that about 32k be available, even if the program
being run is much smaller).
2) About 4k of memory is saved by not having a copy of the command
processor resident when the program is running.
3) The program executes faster, since COMMAND.COM is not loaded from
disk.
4) The program's Exit Code is preserved and may be tested with the
{COMMO} IFERrorlevel function.
Two important rules must be followed when using the "D" switch:
1) The full pathname of the program file must be specified, including the
path where the file resides on disk and the file extension. For
example:
{exec-D c:\util\list.com file.txt}
2) Only .EXE and .COM files may be run (batch files and internal DOS
commands cannot be executed without COMMAND.COM).
---------- Using the Swap to Disk Switch: EXEC-S
The "S" switch will direct {COMMO} to write the program and associated data
to a disk file. This will free up approximately 50k to 180k of memory,
depending on the sizes of your Variable Space, Scrollback Buffer, Dialing
Directory and Macro File. The pathname of this file is specified with
"swp=" in the Setup File (under "Paths and Files").
When the program or shell exits back to {COMMO}, the program and data will
be restored from the disk file. Any errors in this process will cause
-38-
{COMMO} to exit to DOS. If the Swap File cannot be opened or there is not
enough disk space for the swap, the EXECute (or SHELl) will be attempted
without swapping.
TIPS on using Swap to Disk:
> The serial port will be closed during the swap (normally it is left
open to receive characters during EXECute and SHELl). To avoid losing
any data, swapping should be initiated when the remote system is quiet
(or when you are offline).
> Use Swap to Disk when running major applications such as external
protocol drivers, offline mail readers, etc. Using it with internal
DOS functions (DEL, COPY, REN, etc.) or very small programs is
inefficient and unnecessary.
> If possible, specify the Swap File on a RAMDISK. This will speed up
the swap considerably. A ramdisk program is supplied with DOS
(RAMDRIVE.SYS or VDISK.SYS) or you can obtain one from a BBS.
> Be sure to specify a complete pathname for the Swap File.
> Do not run any TSR (resident) programs when swapping is in effect.
Doing so may result in a swap error.
---------- EXECute Preview Mode
Use the Set Toggles key command, Alt-T, to turn on "EXECute Preview Mode."
This mode is used to test your DOS commands and performs the following
steps for each EXECute function:
1) The command will be displayed after expanding variables and converting
control characters.
2) You will be given an opportunity to edit and/or cancel the command
before it is executed.
3) Following execution {COMMO} will wait before restoring the Terminal
Screen. This lets you see any error messages that the command may
have displayed.
=== EXIT ===
Default key: Alt-X
Description: Exit {COMMO}.
General form:
{EXIT number}
-39-
number
The return code to be passed to DOS. It may be tested with
the IF ERRORLEVEL batch command. Range is 0 to 255.
Switches:
D1 or D
Drop DTR and RTS. Dropping DTR will cause the modem to
disconnect if it has been properly initialized. See Appendix A.
D0
Do not drop DTR and RTS.
If the switch is absent, the current setting of the toggle will
be used. The toggle can be set in the Setup File or by using the
Alt-T key command.
Examples:
{exit}
No arguments (return code = 0).
{exit 3}
With return code.
{exit-D}
Drop DTR and RTS.
=== FILE ===
Default key: none
Description: Find directory entry information.
General form:
{FILE filespec}
filespec
The path and file mask to be used for finding directory
entries (filenames and subdirectories). May consist of
drive, path and filename with wildcards.
Switches:
X1 or X
Find next matching entry.
X0
Find first matching entry (default).
-40-
Examples:
{file c:\upload\*.*}
Find first filename or subdirectory in the directory "c:\upload."
{file-x}
Find next filename in same directory.
The FILE function will find directory information about the files and
subdirectories specified in "filespec." The data will be made available in
the following built-in variables:
_ffn
Filename or subdirectory name. Subdirectory names will be
preceded with a "\". The parent directory (if any) will be
indicated as "\..".
_ffs
File size in bytes.
_ffd
File date. The format will be as specified in Setup File item
"dat=".
_fft
File time. The format will be as specified in Setup File item
"tim=".
The FILE function must be executed without the "X" switch (or with X0) to
initialize the directory. This will also make available the first filename
or subdirectory. Subsequent executions (with the "X" switch) will make
subsequent names available.
Use the IFCOndition function to determine if a filename was made available.
The first label ("true") will be taken if a filename was found; the second
label ("false") will be taken if no additional filenames are available.
NOTE: The built-in variables will always contain the data for the last
filename found. If no filename has ever been found, the contents are
unpredictable.
=== GETString ===
Default key: none
Description: Input a string from the modem to a variable.
General form:
{GETString name,count,label}
-41-
name
The name of the variable to which the string will be
assigned.
count
The maximum number of data characters allowed. A carriage
return will always terminate input. May be 1 to 240.
Default is 240.
label
A macro to GOTO if a carriage return is received and no
characters have been entered (the string will be assigned as
null). If this argument is omitted, control will pass to
the next function.
Switches:
A1 or A
"Append" mode. Characters will be appended to the variable. If
the current length of the variable is greater than the count in
the second argument, a count of 240 will be assumed.
A0
The variable will be replaced (default).
H1 or H
"Hotkey" mode. When the maximum number of characters has been
entered, control will pass to the next function.
H0
Ignore all input after the maximum has been entered, except
backspace and carriage return (default).
P1 or P
"Password" mode. Asterisks will be echoed to the remote and
local terminals in place of the received characters (Echo Status
will be honored, see SETGet).
P0
Characters are echoed as received (default).
Examples:
{setget 60,timeout,y,^m^j}
Set GETString parameters.
{gets fonum,12,badinput}
Get input to "fonum."
{gets-p pword,20}
Get a password.
-42-
TIPS on using GETString:
> The only control characters allowed (below ASCII 28) are carriage
return (ASCII 13) and backspace (ASCII 8). Other control characters
should be entered as ^J for linefeed, etc. See Appendix D.
> Destructive backspace processing is supported for editing purposes.
> GETString supports "tandem" input. Characters entered at either end
will be input to the string (and displayed at both ends if echo is on
(see SETGet). Turn on Local Echo to see text locally that is sent to
the remote with SEND, ASCIiup, etc.
> Use the "H" switch and a character count of 1 for "hotkeys."
> Turn off echo in the SETGet while waiting for the modem to answer (in
host mode). Some modems react poorly to characters being echoed when
they are generating a response (such as "RING").
> Incoming characters displayed during a GETString function are not seen
by subsequent SSLOok/CALOok/GOLOok/LOOKfor functions.
See also SETGet.
=== GOLOok ===
Default key: none
Description: GOTO a label when a string appears.
General form:
{GOLOok label,target}
label
A label to GOTO when the target is received from the serial
port.
target
The ASCII string to look for. The string begins following
the "," and is terminated by the "}".
GOLOok is used in conjunction with the LOOKfor function. It sets up an
additional string to look for. When the target string appears, control
will pass to the label.
See LOOKfor for details, examples and tips on using GOLOok.
See also: SSLOok, CALOok, SETLook.
-43-
=== GOTO ===
Default key: none
Description: Transfer control to a macro label.
Example:
{goto mail_run}
Control transferred to label "mail_run".
=== HANGup ===
Default key: Alt-H
Description: Disconnect by dropping DTR.
Examples:
{hangup}
Prompt user for disconnect.
{hangup y}
Disconnect without prompting.
=== HELP ===
Default key: F1
Description: Open Online Help window.
Examples:
{help}
Display key command help
{help x}
Display topic "TX"
Any single character may be specified. {COMMO} will prefix it with a "T"
and search for the topic code. You may create your own Online Help file.
See "Modifying the Help File" in Part I.
=== HOLD ===
Default key: none
Description: Hold until specified time of day (24 hour format).
-44-
Examples:
{hold 3:30}
Hold until 3:30 am.
{hold 16:10}
Hold until 4:10 pm.
{hold 0:00}
Hold until midnight.
NOTE: Incoming characters displayed during a HOLD function are not seen by
subsequent SSLOok/CALOok/GOLOok/LOOKfor functions.
=== IFCArrier ===
Default key: none
Description: Test for presence of carrier detect signal.
General form:
{IFCArrier true,false}
true
A label to GOTO or CALL if carrier is detected.
false
A label to GOTO or CALL if carrier is not detected.
NOTE: If the target label is omitted (null), control will pass to the next
function.
Switches:
C1 or C
A CALL is performed on the label. When the CALLed routine
RETUrns, execution will continue following the IFCArrier.
C0
A GOTO is performed (default).
Examples:
{ifcarrier c10,c20}
Using GOTO
{ifcarrier-c c10,c20}
Using CALL
-45-
TIP on using IFCArrier:
> When using a loop to wait for a change in carrier detect, you should
include a short pause in the loop if you want characters to display.
The following sequence will display incoming characters while waiting
for carrier detect to drop:
... {:cd1} {pause 1} {ifcarrier cd1} ...
=== IFCOndition ===
Default key: none
Description: Test for conditions set by other functions.
General form:
{IFCOndition true,false}
true
A label to GOTO or CALL if the Condition Flag is true.
false
A label to GOTO or CALL if the Condition Flag is false.
NOTE: If the target label is omitted (null), control will pass to the next
function.
Numeric switches:
no switches present
Test the current state of the Condition Flag.
E1 or E
Test for numeric equality. A numeric string contains only the
digits 0-9 and is in the range 0 to 65535.
L1 or L
Numeric test -- if first COMPare argument is less than the
second.
G1 or G
Numeric test -- if first COMPare argument is greater than the
second.
-46-
Other switches:
C1 or C
A CALL is performed on the label. When the CALLed routine
RETUrns, execution will continue following the IFCOndition.
C0
A GOTO is performed (default).
Examples:
{compare var1,message}
{ifcondit match,nomatch}
Compare and set Condition Flag. GOTO "match" if the variable
"var1" is set to "message," to "nomatch" if it is not.
{compare value,200}
{ifcon-GEC toobig,aok}
Compare and set conditions. CALL "toobig" if "value" is greater
than or equal to 200, else CALL "aok."
{instring zipcode,90}
{ifcon yes,no}
Test if "zipcode" contains the digits "90". If "true" GOTO
"yes", if "false" GOTO "no".
Switches may be used in any combination. If any numeric switches are
present, the Condition Flag is not tested.
The difference between testing for string equality and numeric equality is
shown in this example:
The strings "05" and "5" are different text strings, but are
numerically equal.
=== IFERrorlevel ===
Default key: none
Description: Test the Exit Code set by certain functions.
General form:
{IFERrorlevel number,true,false}
number
A number from 0 to 255. It will be compared to the last
Exit Code that was set.
-47-
true
A label to GOTO or CALL if the Exit Code is greater than or
equal to "number."
false
A label to GOTO or CALL if the Exit Code is less than
"number."
NOTE: If the target label is omitted (null), control will pass to the next
function.
Switches:
C1 or C
A CALL is performed on the label. When the CALLed routine
RETUrns, execution will continue following the IFERrorlevel.
C0
A GOTO is performed (default).
Examples:
{iferror 1,abc,def}
GOTO "abc" if Exit Code is greater than or equal to 1. Else GOTO
def.
{ifer-c 2,gtr2}
CALL "gtr2" if Exit Code is greater than or equal to 2 Else
continue.
TIPS on using IFERrorlevel:
> The Exit Code is set by certain functions (e.g., EXECute-D, SHELl,
RXMOdem, SXMOdem) and should normally be tested immediately following
execution of those functions.
> EXECute without the "D" switch or Shell to DOS will normally set the
Exit Code to 0.
> Many programs return an Exit Code greater than 0 when the result is
unsuccessful. DSZ, for example, will return an Exit Code of 1 if the
file transfer has failed.
> The value of the Exit Code is also stored in the string variable
"_err" and may be tested with COMPare.
=== IFEXist ===
Default key: none
Description: Test for existence of a disk file or files.
-48-
General form:
{IFEXist pathname,true,false}
pathname
A DOS pathname. If the path is omitted, the current
directory will be used. If wildcards are used the "true"
condition will hold if any files match the specification.
true
A label to GOTO or CALL if the file exists.
false
A label to GOTO or CALL if no files match.
NOTE: If the target label is omitted (null), control will pass to the next
function.
Switches:
C1 or C
A CALL is performed on the label. When the CALLed routine
RETUrns, execution will continue following the IFEXist.
C0
A GOTO is performed (default).
Examples:
{ifex-c a:file.xyz,,m20}
CALL "m20" if not found.
{ifex c:\data\words.txt,345}
GOTO "345" if found.
{ifex c:\ul\*.rep,a01,a02}
Using a wildcard.
=== INCRement ===
Default key: none
Description: Add a number to a numeric variable.
Examples:
{incr count}
Add 1 to the variable "count".
{incr oranges,1234}
Add 1234 to "oranges".
-49-
The default for the second argument is 1.
If either argument or the result is out of range, then the variable will be
set to the string "ERROR".
If the variable is not numeric, the results will be unpredictable.
See also DECRement.
=== INFOrm ===
Default key: none
Description: Display an advisory message.
General form:
{INFOrm string}
string
Message to be displayed.
Switches:
Q1 or Q
Query the user for a "Yes/No" response. "Yes" will be the
default if Enter is pressed.
The Condition Flag will be set to "true" if the response is
"yes". It will be set to "false" if the response is "no". Test
with IFCOndition.
Q0
Query the user for a "Yes/No" response. "No" will be the default
if Enter is pressed. The Condition Flag is set as above.
Dn
Display the message for "n" seconds, then continue. "n" may
range from 1 to 999.
S1 or S
An error sound will accompany the message (default).
S0
No error sound will be made.
Examples:
{inform Press a key to continue}
Wait for Esc.
-50-
{info-qs0 Overwrite the file?}
Yes/No response, no error sound.
{info-d3 Login now in progress}
Display message for 3 seconds, then continue.
INFOrm will display a string in a pop-up box over the Terminal Screen.
{COMMO} will normally wait for "Esc" to be pressed (switches can alter this
behavior). The string length is limited by the width of the screen.
NOTE: When the "Q" switch is used, Esc and Ctrl-Break will be ignored.
=== INITmodem ===
Default key: Alt-O
Description: Send Modem Initialization String.
Example:
{init}
No arguments
=== INPUt ===
Default key: none
Description: Input a string from the keyboard.
General form:
{INPUt name,prompt}
name
The name of a string variable. The current value of this
variable will appear in the input line.
prompt
A prompt string that will appear in the input window border.
Example:
{input upfile,Enter a filename:}
Input a string to the variable "upfile."
If 0 data characters are entered, the variable will be set to null.
NOTE: If Esc is pressed, macro processing will be terminated unless an
exit label has been defined with SETEsc.
-51-
=== INSTring ===
Default key: none
Description: Find a string within a string, return its position.
General form:
{INSTring name,string}
name
The name of a variable (string to search in).
string
The string to search for.
Example:
{inst line,abc}
The variable "line" is searched for the string "abc".
INSTring will set the following:
1) The Condition Flag will be set to "true" if the string is found,
to "false" if the string is not found. Test with IFCOndition, no
switches.
2) The starting position of the string will be returned in the
built-in variable "_pos" (first character is "1"). "_pos" will
be set to zero if the string is not found.
=== KEYStuff ===
Default key: none
Description: Put key codes into the keyboard buffer.
Examples:
{keys 1c0d}
Put a carriage return into the keyboard buffer.
{keys 1e41,6c00}
Put an "A" in the keyboard buffer followed by Alt-F5.
This function is usually used prior to EXECuting programs, batch files or
DOS commands that require keys to be pressed. It allows complete
automation without operator intervention.
-52-
TIPS on using KEYStuff:
> The key codes are given in hexadecimal (scan code/character code as
received from the BIOS). Press Alt-K in the Internal Editor to view
any key code.
> One or more codes may be listed. Do not insert extra spaces.
> Usually, when specifying an ASCII character, only the character code
need be listed. Thus the second example above could be written:
{keys 41,6c00}.
=== LENGth ===
Default key: none
Description: Determine the length of a string.
Examples:
{leng %line}
Find the length of the string in the variable "line".
{leng %line1%%line2}
Find the combined length of "line1" and "line2".
The length will be returned in the built-in variable "_len". If the string
is null, the length will be set to zero.
=== LIGHts ===
Default key: none
Description: Set Signal Lights toggle.
Examples:
{lights}
Toggle Signal Lights on/off.
{lights y}
Turn on Signal Lights.
{lights n}
Turn off Signal Lights.
-53-
=== LOCAlecho ===
Default key: none
Description: Set Local Echo toggle.
Examples:
{local}
Toggle Local Echo on/off.
{local y}
Turn on Local Echo.
{local n}
Turn off Local Echo.
=== LOOKfor ===
Default key: none
Description: Look for strings in the modem input stream.
LOOKfor is used in conjunction with SSLOok, CALOok and GOLOok to scan for
as many as 16 strings at the same time. When SSLOok, CALOok and GOLOok set
up additional strings to look for, the actual "looking" does not take place
until the LOOKfor executes.
Parameters controlling LOOKfor are set with the SETLook function and may be
changed at any time with another SETLook. See the description of the
SETLook function for details.
Examples using LOOKfor only:
{lookfor first name?}
Look for the string "first name?"
{look ^(COMMO^)}
Look for the string "{COMMO}".
When the string comes in, control will pass to the next function.
Example construct using SSLOok/CALOok/GOLOok/LOOKfor:
{setlook 60,hng,3,n|}
{setv ss_r,|}
...
{:start}
{golook label-a,target1}
{calook start,label-b,target2}
{sslook ss_r,target3}
{golook ,target4}
-54-
{lookfor target5} {send answer5}
{goto label-c}
{:label-a} {hangup y} {goto cancel}
{:label-b} {send answer2} {call subr} {return}
{:label-c} ...
In this example {COMMO} will look for five target strings.
When a target specified in any of the CALOok, GOLOok or LOOKfor
functions is received, the LOOKfor is cancelled. It may be set up
again by going to "start".
When the target specified in the SSLOok is received, the string in the
variable will be transmitted to the serial port. The LOOKfor will
continue to look for the same targets.
The GOLOok function for target1 will GOTO "label-a" when the string
comes in. In the example control will pass to "cancel" (macro not
shown).
If target2 comes in, the CALOok function will set "start" as the
return point and then CALL "label-b". When this routine RETUrns,
control returns to "start" and the five string LOOKfor will be set up
again.
If target3 is received, the string in the variable "ss_r" will be sent
(in this case, a carriage return) and looking will continue.
The GOLOok for target4 has a null label and control will pass to the
function following the LOOKfor if that string comes in. The "," must
be present.
If target5 comes in, control will pass to the function following the
LOOKfor.
TIPS on creating LOOKfor strings:
> There should be just one space following the LOOKfor function name.
Any spaces beyond this point are part of the string. The string ends
at the right curly brace.
> SSLOok/CALOok/GOLOok/Auto Receive strings begin immediately after the
comma. There should be no spaces unless they are part of the string.
> Strings may be up to 32 characters in length (control characters like
"^M" count as one). Upper/lower case is ignored.
> ANSI control sequences are filtered if ANSI or VT102 emulation is
enabled.
> Remember that short strings may not be unique enough, long strings may
not match due to line noise.
-55-
> Rules for representing special characters in
SSLOok/CALOok/GOLOok/LOOKfor/Auto Receive strings are given in
Appendix D.
Additional TIPS:
> SSLOok, CALOok and GOLOok functions should immediately precede a
LOOKfor (no string compares actually occur until the LOOKfor
executes). Up to 15 SSLOok/CALOok/GOLOok strings may be used in
addition to the LOOKfor (up to 16 strings total).
> FILTER Capture Mode should be used to determine the exact prompt to
look for. The LOOKfor sees the incoming data exactly as it is
captured when FILTER mode is set.
> If two or more strings cause a match at the same time, the LAST such
string listed is the one acted upon (for example, if "abcdef" and
"def" are listed and the string "abcdef" comes in).
See also: SSLOok, CALOok, GOLOok, SETLook.
=== MACLoad ===
Default key: none
Description: Load a new Macro File.
General form:
{MACLoad filename,label}
filename
The new Macro File. Do NOT specify a path; the {COMMO} home
directory will be used.
label
A label to GOTO when the new file is loaded. Optional.
Switches:
R1 or R
Specifies that COMMO.MAC will be reloaded when carrier detect is
lost. Normally this would occur at the end of the call.
R0
Do not reload COMMO.MAC when carrier is lost (default).
Examples:
{macload-R vt102-1.mac}
Load vt102-1.mac, reload COMMO.MAC at the end of the call.
-56-
{macl newmac.fil,abc}
Load newmac.fil, start macro "abc" in the new file.
{macload commo.mac,%mcall}
Load COMMO.MAC, GOTO the label specified in the variable "mcall".
IMPORTANT! The new Macro File must reside in the {COMMO} home directory
(do not specify a path).
TIPS on using MACLoad:
> The new Macro File can be "called" (by setting a variable to the
return label). Use this variable as the optional label when
"returning" to the calling Macro File.
> The macro stack is preserved during MACLoad. Be sure that your CALLs
and RETUrns are in "sync" or the results may be unpredictable.
> The current file will be saved to disk if changes are outstanding.
The new file is then loaded in place of the current one (all macros
are replaced).
> MACLoad should be the last function in a macro, since control is not
returned.
=== MACRo ===
Default key: Alt-M
Description: Open Macro Processor window.
Examples:
{macro}
Open window at current position.
{macro menu1}
Open window at "menu1."
NOTE: The MACRo function always terminates the macro that is currently
executing.
A string argument may be included to facilitate the creation of menus
within the Macro File. The first occurrence of the argument string will
become the top line of the display when the window is opened.
The Selector Bar will be positioned on the first screen line that has a
left curly brace, if any.
-57-
Here is an example of how to structure a menu using MACRo:
| (this is past col. 80)
| menu111
Name of Menu |
|
|
Selection 1 | {goto sel1}
Selection 2 | {goto sel2}
Selection 3 | {goto sel3}
{:af1} {macro menu111}
{:sel1} ...
{:sel2} ...
{:sel3} ...
The upper line with "menu111" will be the top line of the screen. Pressing
Alt-F1 will bring up the menu with the Selector Bar on Selection 1. Macros
at "sel1", "sel2" and "sel3" will process the respective selections.
Note that the macro at "af1" to invoke the menu must be below the menu
since it contains the string and would be found in the search.
See also MENU.
=== MARK ===
Default key: none
Description: Mark Dialing Directory entries for dialing.
Example:
{mark joes-bbs,file-city}
Mark entries for dialing.
Dialing Strings may be separated by spaces or commas.
{COMMO} will search the Dialing Directory for each string and mark the
first entry where a match is found. Case is ignored.
The strings may consist of any part of a Dialing Directory entry line
(including strings contained within curly braces), but must NOT contain any
spaces, commas or curly braces.
See also: DIAL, UNMArk.
-58-
=== MENU ===
Default key: none
Description: Create a pop-up macro menu.
General form:
{SETV _menu1,text1}
{SETV _menu2,text2}
...
{SETV _menuN,textN}
text1
Text to be placed on first information line in the pop-up
window (third line down, counting from the top border).
NOTE: These text strings are simply information and have no
effect on which macros will be executed.
text2
Text to be placed on second information line.
...
textN
Text to be placed on Nth information line.
{SETV _mlabel,label1,label2,...}
NOTE: Labels are positional and may be omitted using null
arguments for keys that aren't used. See example 2 below.
label1
Label to GOTO if F1, A or 1 is pressed. Any of the three
keys will activate the macro at the first label.
label2
Label to GOTO if F2, B or 2 is pressed.
... etc.
{SETV _menter,label}
label
Label to GOTO if Enter is pressed.
{SETV _mcolor,text,border}
text
Colors for the text area of the pop-up window.
border
Colors for the window border.
-59-
NOTE: The attributes are specified in the same manner as the
colors in the Setup File (press F7 in the Internal Editor to
display the Color Chart).
{MENU height,width,string}
height
Total number of rows from top to bottom of pop-up window,
including borders. Minimum is 5.
width
Total number of columns from left side to right side,
including borders. Minimum is 23.
string
Title string that will appear in the top border.
Example 1:
{setv _menu1, F1 Call computer at work}
{setv _menu3, F2 Call E-mail service}
{setv _menu5, F3 Run offline mail reader}
{setv _mlabel,work,mail,reader}
{setv _mcolor,17,30}
{menu 9,32,Daily Activity Menu} {}
{:work} ... macro to call work computer.
{:mail} ... macro to call E-mail service.
{:reader} ... macro to run offline reader.
This menu specifies that function keys be pressed to activate the
macros. You could also press A or 1 instead of F1, B or 2 instead of
F2, etc. The macros may be as simple or as complex as desired to
complete the task.
Example 2:
{setv _menu1, [D] Dialing Directory}
{setv _menu4, [E] Edit a file}
{setv _menu2, [M] Macro File}
{setv _menu3, [Enter] Shell to DOS (with swap)}
{setv _mlabel,,,,ddir,edit,,,,,,,,mfile}
{setv _menter,dos}
{setv _mcolor,03,47}
{menu 8,39,Common Commands} {}
{:ddir} {dial} {}
{:edit} {input efile,Filename to Edit}
{edit %efile} {}
{:mfile} {macro}
{:dos} {shell-s} {}
-60-
This menu uses "mnemonic" key labeling -- D for (D)ialing Directory,
etc. Notice that there are three empty positions in the "_mlabel"
list prior to "ddir" and "edit". These correspond to A, B and C,
which are not used in this menu. Then there are empty positions up to
"mfile" (M).
TIPS on using MENU:
> The dimensions of the window are limited by the current size of the
Terminal Screen.
> The total number of displayable lines is "height" less 4. Lines in
the window for which no "_menux" variable has been defined will be
left blank.
> Up to 26 labels can be specified in each menu. These correspond to
pressing the letters A through Z. The first 12 labels also correspond
to pressing F1 through F12, while the first 9 labels correspond to
pressing 1 through 9.
> The built-in variable "_msn" is set to the number of the menu
selection when a menu key is pressed: 0 for Enter, 1 to 26 for A to Z,
etc.
> All variables used to create the menu are automatically deleted from
Variable Space after the menu is displayed.
> The last colors used to display a menu will persist until they are
changed (by setting the "_mcolor" variable).
> If Esc is pressed to exit the menu, macro processing continues in
sequence following the MENU function.
See also MACRo.
=== MULTiply ===
Default key: none
Description: Multiply a numeric variable by a number.
Example:
{mult money,10}
Multiply "money" by 10.
The multiplier (second argument) is limited to 65535 (default is 1).
If either argument or the result is out of range, then the variable will be
set to the string "ERROR".
If the variable is not numeric, the results will be unpredictable.
-61-
=== NOCArrier ===
Default key: none
Description: Sets/resets a macro to execute when carrier detect is lost.
Examples:
{nocar carrlost}
GOTO the label "carrlost" when the carrier detect signal drops.
{nocar}
Turn off the carrier lost label.
IMPORTANT! This feature is enabled only when a connection is made using
{COMMO}'s Auto Dialer. Also, if carrier drops while a macro is running or
a command window is open (such as the Dialing Directory or Capture File
Options), the carrier lost macro will not activate.
Be sure that you have your modem configured to provide the carrier detect
signal. See Appendix A for modem information.
=== NOOP ===
Default key: none
Description: No-op function, does nothing
Example:
{noop}
No arguments.
=== OFFLog ===
Default key: none
Description: Make an {Off} entry in the Usage Log.
Example:
{offlog}
No arguments.
This function is useful on systems that do not support the carrier detect
signal.
NOTE: An {Off} entry will be made only if an {On} entry was made at
connection time.
-62-
=== PARMs ===
Default key: Alt-P
Description: Set Current Terminal Parameters
General form:
{PARMs speed,format,comport,terminal-type,delay}
speed
The bps rate: 2400, 9600, etc.
format
The data format: 8n1, 7e1, etc.
comport
The serial port number: 1, 2, 3 or 4.
terminal
The terminal-type: A, V or T.
delay
The inter-character delay factor: 0-999.
Examples:
{parms 2400,8,1,,20}
Set 2400 bps, 8n1, Com1, delay=20.
{parms ,,4,V}
Set Com4 VT102.
{parms 19200,7o1}
Set 19200 bps, 7o1.
IMPORTANT! Omitted parameters are not changed.
This function will change the current parameters, but has no effect on the
parameters set when dialing.
See also DPARms.
=== PASSword ===
Default key: Alt-W
Description: Send current password.
-63-
Example:
{password}
No arguments.
The current password is obtained from the Dialing Directory entry whenever
a number is dialed. If no password is specified no characters will be
sent.
=== PAUSe ===
Default key: none
Description: Pause for a time interval.
Switches:
T or T1
Time is specified in DOS clock ticks (there are 18 clock ticks
per second).
T0
Time is specified in seconds (default).
Examples:
{pause 25}
Pause for 25 seconds.
{pause-t 9}
Pause for 9 clock ticks (one half second).
NOTE: Incoming characters displayed during a PAUSe function are not seen
by subsequent SSLOok/CALOok/GOLOok/LOOKfor functions.
=== POPStack ===
Default key: none
Description: Pop an element from the macro stack.
Switches:
C1 or C
Clear all elements from the stack.
C0
Pop the top element (default).
-64-
Examples:
{pops}
Pop the top element.
{pops-c}
Clear the stack.
POPStack throws away the top element on the macro stack. This element
would have been used by the next RETUrn function.
See PUSHstack for a more complete description of the use of this function.
See also CALL, RETUrn.
=== PRINtlog ===
Default key: Alt-2
Description: Set Print Log toggle.
Examples:
{print}
Toggle Print Log on/off.
{print y}
Turn on Print Log.
{print n}
Turn off Print Log.
=== PUSHstack ===
Default key: none
Description: Push a return point onto the macro stack.
Examples:
{push}
Push the current location.
{push abc}
Push the location "abc".
When there are no arguments, the location pushed is the location of the
PUSHstack function itself (i.e., it will be executed again when a RETUrn is
encountered).
-65-
Explanation: Whenever a CALL is executed, the location of the function
following the CALL (the "return point") is "pushed" onto the macro stack.
When a subsequent RETUrn is executed, the location at the top of the stack
is "popped" and control is transferred to that location. This allows
"nesting" of CALLs and RETUrns.
PUSHstack will push a return point onto the macro stack without
transferring control to the location (control continues in sequence). A
subsequent RETUrn will transfer control to the location that was pushed.
POPStack will remove the top stack element without transferring control to
it (control continues in sequence).
See also CALL, RETUrn.
=== RCLOse ===
Default key: none
Description: Close the read file.
Example:
{rclose}
No arguments.
NOTE: The read file will be closed automatically in the following
situations:
1) When an attempt is made to read past the end of the file.
2) When the macro terminates (STOP, EXIT, etc.).
See also ROPEn, READ.
=== READ ===
Default key: none
Description: Read a line from the read file to a variable.
Example:
{read nextline}
Read the next line in the file into the variable "nextline."
TIPS on reading files:
> A file must be open for reading or a macro error will result.
> Each READ will get the next line in the file (lines are terminated by
carriage return and linefeed).
-66-
> When an attempt is made to read past the end of file, control will
GOTO the label specified in the ROPEn. If no label was specified or
if the label was invalid, control will continue in sequence. In
either case the file is automatically closed and the variable is set
to null.
> READ will set the Exit Code to 0 unless the end of file was
encountered, in which case it will be set to 1. The Exit Code is
stored in the built-in variable "_err" and can be tested with the
IFERrorlevel function.
> ALL control characters (below ASCII 28) will be discarded, including
the carriage return/linefeed that terminates the line.
> Lines longer than 240 characters will be truncated to a length of 240.
See also ROPEn, RCLOse
=== RETUrn ===
Default key: none
Description: Return from a CALLed macro.
Example:
{return}
No arguments.
This function will return control to a location determined by the last CALL
or PUSHstack function. See PUSHstack for a more complete description of
CALL and RETUrn.
NOTE: If a RETUrn is encountered and no CALL or PUSHstack has been
executed, a STOP will occur. This is useful in macros that are CALLed and
are also used standalone (such as protocol file transfer macros).
See also CALL, PUSHstack, POPStack.
=== ROPEn ===
Default key: none
Description: Open a file for reading.
General Form:
{ROPEn pathname,label}
-67-
pathname
The pathname of the file to open.
label
A label to GOTO when a READ is attempted at the end of the
file.
Example:
{ropen c:\bbs\file.txt,nomore}
Open the file and set the label "nomore" to GOTO when the end of
the file is reached.
TIPS on using ROPEn:
> Only one file may be opened for reading (and one for writing).
> The file will be automatically closed when the end of the file is
encountered during a READ (whether or not a label is specified). An
RCLOse is not needed in this situation.
See also READ, RCLOse.
=== RTRAn ===
Default key: none
Description: Maintain Receive Translate Table.
Switches:
I1 or I
Initialize Receive Translate Table to default values (consecutive
0 to 255).
I0
Do not initialize (default).
Examples:
{rtran y}
Turn receive translation ON.
{rtran-i n}
Initialize the table and turn it OFF.
{rtran 26,0}
Change ASCII 26 to null (ASCII 0, which will not display).
{rtran-i y,#8,224,240}
Initialize the table, turn receive translation ON, change ASCII
224 to 240, 225 to 241, ..., 231 to 247.
-68-
{rtran}
Toggle receive translation ON/OFF.
{rtran #13,65,78,#13,78,65,#13,97,110,#13,110,97}
ROT13 translation. This exchanges each letter in the first half
of the alphabet with the corresponding letter from the second
half (and vice-versa).
Rules for RTRAn arguments are the same as for the {rtr=} item in the Setup
File. In addition, "n" may be used as the first argument to turn receive
translation OFF at any time.
See "Edit Setup File" in Part I for details and more examples.
TIPS on using RTRAn:
> Some control characters are unaffected by translation when certain
features are enabled. Examples: XON (17) and XOFF (19) are not
translated when Software Flow Control is on. ENQ (5) is not
translated when ENQ/ACK emulation is on.
> When the Capture Mode is set to RAW, data will be captured prior to
translation. FILTER and SCREEN captures will contain translated data.
> LOOKfor will always see translated data. Use FILTER Capture Mode to
see what LOOKfor sees.
> In GETString, incoming data (as well as locally typed characters) will
be translated with the Receive Translate Table (it may be necessary to
turn receive translation off during certain GETString functions).
See also STRAn.
=== RXMOdem ===
Default key: none
Description: Receive a file using the Xmodem protocol.
Switches:
See RYMOdem (switches are the same).
Example:
{rxmo-ya c:\dl\file.zip}
Receive "file.zip", overwrite the file if it exists, sound the
alarm.
-69-
Only one file may be received with each RXMOdem function (the file must be
explicitly named, but need not be given the same name as on the remote
system).
See RYMOdem for tips that apply to both RXMOdem and RYMOdem.
See also SXMOdem, RYMOdem.
=== RYMOdem ===
Default key: none
Description: Receive files using the Ymodem Batch protocol.
Switches:
C1 or C
Use CRC error correction (default).
C0
Use Checksum error correction.
G1 or G
Use streaming (fast) transfer method.
IMPORTANT! Use only with error-correcting modems or direct
connections between computers.
G0
Use normal (error-correcting) transfer method (default).
Y1 or Y
Overwrite an existing file when a received file has the same name
(the existing file will be erased).
Y0
Cancel the transfer if a received file has the same name as an
existing file (default).
D1 or D
Cancel transfer if carrier detect is lost (default).
NOTE: If carrier detect is off when the transfer is started,
this switch will behave as if "D0" had been set.
D0
Ignore state of carrier detect.
-70-
A1 or A
Sound the alarm at the end of the transfer.
A0
Do not sound the alarm (default).
W
Wait for a keypress at end of transfer.
Wn
Wait for "n" seconds, "n" may range from 0 to 999. Press a key
to cancel the wait.
Note: Default (no "W" switch) is no wait.
Examples:
{rymo-ya %dldir}
Receive files into the download directory, overwrite a file if it
exists, sound the alarm.
{rymo-gw3}
Receive files using the "G" method into the current directory.
Wait 3 seconds before returning to the Terminal Screen.
Ymodem is a "batch" protocol that will receive multiple files. Filenames
are transmitted by the sender and are used to name files at the receiving
end. A filename "collision" will cause the transfer to cancel unless the
"Y" switch is used. File sizes are also transmitted by the sender and are
used to truncate the file to the proper size.
TIPS on using RYMOdem and RXMOdem:
> The "G" method is specified by the receiver. Be sure that the sender
allows it before starting.
> Block size is established by the sender and may be changed on a block-
by-block basis (always 1024 when the "G" method is used).
> Some conditions that will cancel a transfer:
1) 10 consecutive errors.
2) Any error when "G" method is used.
3) The file to be received already exists and the "Y" switch is not
present.
4) The sender has transmitted CAN (^X) characters.
> The Exit Code (test with IFER) will be set at the end of the transfer.
The Exit Code will also be stored in the variable "_err". 0 means
success, 1 means failure.
> If the Usage Log is enabled, an entry will be made after each file is
transferred (or if a transfer is cancelled).
-71-
See also SYMOdem, RXMOdem.
=== SCREen ===
Default key: Alt-I
Description: Screen Image Save.
Examples:
{screen}
Open Screen Image Save window.
{screen y}
Append screen image to current file.
{screen y,commo.scr}
Append screen image to indicated file. (and change current
pathname).
{screen n,c:\file.xyz}
Change current screen image pathname (don't save screen to file).
=== SCROllback ===
Default key: Alt-K
Description: Display Scrollback Buffer
Example:
{scroll}
No arguments.
=== SEND ===
Default key: none
Description: Send a string to the modem (serial port).
Examples:
{send Fred|~~Brucker|~~%_pass%|}
Send my first and last name with carriage returns and 1 second
delays, then send the current password and a <cr>.
-72-
{send ^[^[}
Send two <esc> characters.
{send }
Send a space (there must be two spaces, the first is the
separator).
{send %line}
Send the string in the variable "line".
NOTE: See Appendix D for information on how to represent any character in
a SEND function.
=== SETDial ===
Default key: none
Description: Set parameters for dialing.
Examples:
{setdial 60,15}
Set the dialing cycle timer to 60 seconds and the Inter-dial
Delay to 15 seconds.
{setd ,3}
Change only the Inter-dial Delay timer.
The first argument is the dialing cycle time limit. This is the number of
seconds {COMMO} will allow after sending the dial command to the modem.
Range is from 1 to 999.
The second argument is the inter-dial delay timer. This is the number of
seconds before {COMMO} dials the next number. Range is from 1 to 999.
NOTE: Changes to dialing parameters override the Setup File values and
remain in effect until {COMMO} is exited.
See also DIAL.
=== SETEsc ===
Default key: none
Description: Define a label to GOTO when Esc is pressed.
General form:
{setesc label}
-73-
label
A label to GOTO when the user presses Esc during macro
execution.
Switches:
P1 or P
The user will be prompted with, "A macro is running. Terminate
it?." If the user answers "no," macro processing will continue
as if nothing had happened. If "yes," processing will GOTO the
label. If the label does not exist, a STOP will be executed. P1
is the default.
P0
The user will not be prompted. Processing will GOTO the label if
it exists, else a STOP will be executed.
Examples:
{setesc finish}
GOTO label, with prompt.
{sete-p0 done}
GOTO label, without prompt.
{setesc}
Reset to no label (STOP on Esc).
This function is used to "capture" the Esc key during macro execution,
especially when a MACLoad is used to load a new Macro File. It will help
prevent accidental macro terminations.
The macro at the label would typically reload COMMO.MAC, thus restoring the
user's familiar environment.
NOTE: In the various command windows, Esc is normally used to exit the
window. Use Ctrl-Break to bring up the prompt.
=== SETGet ===
Default key: none
Description: Set parameters for GETString functions.
General form:
{SETGet seconds,label,y/n/l,string}
-74-
seconds
GETString timeout. If a character is not entered in the
specified amount of time, the macro in the second argument
will be started. May be 0 to 999. Default is 0 (disabled).
label
Timeout macro. Macro to GOTO if the time in the first
argument expires. If no macro is specified or if the macro
label is invalid, control will pass to the function
following the GETString. Default is no macro.
Note that if the timer expires no variable assignment will
be made. Any previous assignment will be unaltered.
y/n/l
Echo Status. If this is "yes", characters entered at the
local or remote terminals will be echoed back to the remote
and displayed locally. This is the default.
If "no", characters will not be echoed to either location.
If "local", characters will be displayed locally, but not
echoed to the remote. This should be used when the remote
is a host system.
IMPORTANT! This setting is independent of Local Echo. Turn
on Local Echo if necessary for local display of data
transmitted with SEND, ASCIiup, etc.
string
Terminator response. This string will be sent and/or
displayed locally (in accord with the Echo Status) when a
carriage return is received (input terminated). This is
typically a carriage return/linefeed. May be up to 32
characters. Default is no string.
Example:
{setg 120,noget,y,^m^j}
Set GETString parameters.
The SETGet function will set parameters for all subsequent GETString
functions. It may be executed at any time to modify the parameters.
When macro processing terminates, the parameters will be reset to the
default values.
-75-
Default arguments are:
GETString timeout 0 (disabled)
Timeout macro none
Echo status y (echo on)
Terminator response none
IMPORTANT! Null arguments in the SETGet function will be set to these
defaults.
See also: GETString.
=== SETLook ===
Default key: none
Description: Set parameters for LOOKfor functions.
General form:
{SETLook seconds,label,seconds,string}
seconds
LOOKfor timeout. Maximum time in seconds to look for a
string. If the string is not found in the allotted time,
the macro in the second argument will be started. May be 0
to 999. Default is 0 (disabled).
label
Timeout macro. Macro to GOTO if the time in the first
argument expires. If no macro is specified or if the macro
label is invalid, control will pass to the function
following the LOOKfor.
seconds
Prompt timeout. During a LOOKfor function unwanted prompts
may appear like "Press any key" or "More [Y/n]", etc. This
argument is the time in seconds to wait at a prompt (no
input from the modem) before sending the string in the
fourth argument. Usually you would send "|" or "n|".
When the response string is sent the timer is restarted,
allowing any number of prompts to be satisfied (until the
LOOKfor itself is satisfied or times out).
The timer will also be restarted if any keys are typed while
waiting. This allows a manual response to a prompt which
the macro does not handle.
IMPORTANT! The prompt timeout should be long enough (or
disabled entirely) to prevent the response from being sent
when there is a long delay without a prompt. This might
-76-
occur right after connection while the BBS software is
loading or when a "door" program is loading.
Failure to heed this warning will result in "n" responses to
"First name?" and other undesirable effects.
May be 0 to 999. Default is 0 (disabled).
string
Prompt response. String to send when the time in the third
argument runs out. May be up to 32 characters. Default is
no string.
Example:
{setl 60,abc,4,n|}
Set LOOKfor parameters
The SETLook function will set parameters for subsequent LOOKfor functions
and may be executed at any time to modify the parameters.
When macro processing terminates, the parameters will be reset to the
default values.
Default arguments are:
LOOKfor timeout 0 (disabled)
Timeout macro none
Prompt timeout 0 (disabled)
Prompt response none
IMPORTANT! Null arguments in the SETLook function will revert to these
defaults.
See also: LOOKfor, SSLOok, CALOok, GOLOok.
=== SETVariable ===
Default key: none
Description: Assign a string to a variable name.
General form:
{SETVariable name,string}
-77-
name
The name of the variable to which the string will be
assigned.
string
The string may be the name of another {COMMO} variable or an
environment variable. In these cases further expansion is
controlled by switches (see below).
Switches:
E1 or E
This switch indicates that the second argument is a DOS
environment variable. If it is not found in the environment, the
{COMMO} variable will be set to NULL.
Note that environment variable names are CASE SENSITIVE (they are
usually upper case).
E0
Normal variable (default).
S1 or S
This switch will cause "double expansion" of the second argument
(indirect variable). First {COMMO} will substitute any variables
indicated by "%" signs. The resulting string (which must NOT
begin with a "%") will then be treated as a variable name and
expanded again.
This facility may be used to create a "subscript."
S0
Single expansion (default).
Examples:
{setv net,nodeid}
Assign the string "nodeid" to the variable name "net".
{setv nodeid,ggcs_bbs}
Assign the string "ggcs_bbs" to the variable name "nodeid".
{setv-s bbs,nodeid}
Assuming the above examples have been executed, this will set the
variable "bbs" to "ggcs_bbs".
{setv-s board,%net}
Assuming the above examples have been executed, this will set the
variable "board" to "ggcs_bbs".
-78-
{setv-s xxx,yyy%index}
Suppose the variable "index" has the value "3". It will be
expanded first, then "yyy3" will be expanded and its value
assigned to "xxx".
{setv-e abc,TABLE}
Assuming a "SET TABLE=" DOS command has been executed prior to
running {COMMO}, the variable "abc" will be set to the
environment string.
{setv abc} or {setv abc,}
Set the variable "abc" to null (it will be deleted from variable
space).
=== SHELl ===
Default key: Alt-S
Description: Shell to DOS.
Switches:
S1 or S
Swap to disk before shelling to DOS (see details under EXECute,
"Using the Swap to Disk Switch").
S0
Do not swap to disk (default).
Examples:
{shell}
No arguments.
{shell-s}
Swap to disk before shelling to DOS.
=== SIGNal ===
Default key: none
Description: Set state of hardware signals.
Switches:
D1 or D
Set DTR high.
D0
Set DTR low.
-79-
R1 or R
Set RTS high.
R0
Set RTS low.
Example:
{signal-d0r1}
Turn off DTR, turn on RTS.
The "D" and "R" switches are used to control the RS-232C signals DTR (Data
Terminal Ready) and RTS (Request To Send). The default for each switch is
to leave the signal unchanged. Use these with care due to interaction with
Hardware Flow Control, etc.
=== SOUNd ===
Default key: none
Description: Set Master Sound toggle.
Examples:
{sound}
Toggle Master Sound on/off.
{sound y}
Turn on Master Sound.
{sound n}
Turn off Master Sound.
=== SPDCtrl ===
Default key: none
Description: Serial port display control.
Examples:
{spdc y}
Serial port display is ON.
{spdc n}
Serial port display is OFF.
This function will suppress display of any data received from the serial
port. It can be used when a "clean" display is desired during automated
procedures.
-80-
TIPS on using SPDCtrl:
> Serial port display can be suppressed only while a macro is running
(it will be restored to ON at macro termination).
> ANSI control sequences are not processed while the display is OFF
(Terminal Emulation effectively reverts to TTY).
> LOOKfor will function normally, but remember that ANSI sequences are
not stripped. Make a manual run using TTY emulation to see what the
LOOKfor will see.
> SCREEN Capture Mode will not capture any of the incoming data. Use
RAW mode or FILTER mode instead (FILTER capture will be affected by
the Translate Table, but will still contain ANSI sequences).
=== SPOCtrl ===
Default key: none
Description: Serial port output control.
Examples:
{spoc y}
Serial port output is ON.
{spoc n}
Serial port output is OFF.
This function will inhibit any data from being sent to the serial port.
All other program operations will be normal. It is used for "local mode"
in host macros (no data is sent to the modem).
TIPS on using SPOCtrl:
> Serial port output can be inhibited only while a macro is running (it
will be restored to ON at macro termination).
> Internal protocols will not operate properly if serial port output is
turned OFF.
=== SSLOok ===
Default key: none
Description: Send a string when a string appears.
General form:
{SSLOok name,target}
-81-
name
The name of a string variable (MUST be a variable).
target
The ASCII string to look for. The string begins following
the "," and is terminated by the "}".
Switches:
R or R1
Send a carriage return after sending the variable string to the
serial port.
R0
Do not send a carriage return (default).
Example:
{setv ss_r,|} {setv ss_nr,n|}
...
{sslo-r _pas,password:}
{sslo ss_r,Press enter to continue}
{sslo ss_nr,Do you want to log off?}
{look command?} ...
SSLOok is used in conjunction with the LOOKfor function. It sets up an
additional string to look for. When the target string appears, the string
in the variable is sent to the serial port. The LOOKfor continues to look
for all specified strings.
See LOOKfor for details, examples and tips on using SSLOok.
See also: CALOok, GOLOok, SETLook.
=== STATusline ===
Default key: none
Description: Set Status Line toggle.
IMPORTANT! The Status Line is {COMMO}'s instrument panel. You should not
turn it off until you are familiar with operating the program.
Examples:
{statusline}
Toggle Status Line on/off.
-82-
{status y}
Turn on Status Line.
{status n}
Turn off Status Line.
When the Status Line is off (not visible), the bottom line of the display
becomes part of the Terminal Screen.
The STATusline function is ignored while in Chat Mode.
=== STOP ===
Default key: none
Description: Halt macro execution.
Examples:
{stop}
No arguments.
{}
Short form.
STOP always returns {COMMO} to manual operation in the Terminal Screen. It
should be used to end login macros.
=== STRAn ===
Default key: none
Description: Maintain Send Translate Table.
Switches:
I1 or I
Initialize Send Translate Table to default values (consecutive 0
to 255).
I0
Do not initialize (default).
Examples:
{stran y}
Turn send translation ON.
-83-
{stran-i n}
Initialize the table and turn it OFF.
{stran-i y,92,47}
Initialize the table, turn send translation ON, change "\" to
"/".
{stran}
Toggle send translation ON/OFF.
{stran #13,65,78,#13,78,65,#13,97,110,#13,110,97}
ROT13 translation. This swaps the first 13 letters of the
alphabet for the second 13.
Rules for STRAn arguments are the same as for the {str=} item in the Setup
File. In addition, "n" may be used as the first argument to turn send
translation OFF at any time.
See "Edit Setup File" in Part I for details and more examples.
TIPS on using STRAn:
> Some control characters are unaffected by translation when certain
features are enabled. Examples: XON (17) and XOFF (19) are not
translated when Software Flow Control is on. When ENQ/ACK emulation
is on, an ACK sent in response to an ENQ will not be translated.
> In GETString, data echoed to the modem (and displayed locally) will be
translated with the Send Translate Table (it may be necessary to turn
send translation off during certain GETString functions).
See also RTRAn.
=== SUBString ===
Default key: none
Description: Move a substring to a variable.
General form:
{SUBString name,start,count,string}
name
The name of the variable to which the substring will be
assigned.
start
The starting character number (first character is "1"). If
it is negative, {COMMO} will count in from the end of the
string.
-84-
If it is too large and positive, the substring will be null.
If it is too large and negative, the substring will start at
the beginning of the string.
count
The number of characters to use. If the number is too
large, {COMMO} will use as many as possible. If the count
is 0, the substring will be null.
string
The string to use.
Examples:
{subs var-sub,2,4,abcdefgh}
Set "var-sub" to "bcde".
{subs newvar,-5,20,abcdefgh}
Set "newvar" to "defgh".
=== SXMOdem ===
Default key: none
Description: Send a file using the Xmodem protocol.
Switches:
See SYMOdem (switches are the same).
Example:
{sxmo-ka c:\ul\file.zip}
Send "file.zip" using 1024 byte block size (Xmodem-1k), sound the
alarm.
Only one file may be sent with each SXMOdem function.
See SYMOdem for tips that apply to both SXMOdem and SYMOdem.
See also RXMOdem, SYMOdem.
=== SYMOdem ===
Default key: none
Description: Send a file using the Ymodem Batch protocol.
-85-
Switches:
K1 or K
Use 1024 byte block size.
K0
Use 128 byte block size (default).
D1 or D
Cancel transfer if carrier detect is lost (default).
NOTE: If carrier detect is off when the transfer is started,
this switch will behave as if "D0" had been set.
D0
Ignore state of carrier detect.
A1 or A
Sound the alarm at end of transfer.
A0
Do not sound the alarm (default).
W
Wait for a keypress at end of transfer.
Wn
Wait for "n" seconds, "n" may range from 0 to 999. Press a key
to cancel the wait.
Note: Default (no "W" switch) is no wait.
Examples:
{symo-ka %uldir\*.zip}
Send all .ZIP files in the upload directory using 1024 byte block
size, sound the alarm.
{symo-k c:\subdir\*.*,@c:\ul\file.lst,info.txt,a:*.qw?}
Send all files listed using 1024 byte block size.
Any combination of file specifications may be listed in the SYMOdem
function (separated with commas). These may include wildcard specifiers
(*,?), the indirect file specifier (@) and any single files.
If a filespec is preceded with the "@" sign, it will be assumed to be an
"indirect file." This means that it is a text file containing a list of
filespecs. Filespecs should be listed one per line and each line should
end with a cr/lf. Each filespec may contain wildcards. For example:
c:\subdir\*.*
info.txt
a:*.qw?
-86-
TIPS on using SYMOdem and SXMOdem:
> CRC vs. Csum mode is established by the receiver.
> Use of "G" method is established by the receiver.
> Some conditions that will cancel a transfer:
1) 10 consecutive errors.
2) Any error when "G" method is used.
3) The receiver has transmitted CAN (^X) characters.
> The Exit Code (test with IFER) will be set at the end of the transfer.
The Exit Code will also be stored in the variable "_err". 0 means
success, 1 means failure.
> If the Usage Log is enabled, an entry will be made after each file is
transferred (or if a transfer is cancelled).
See also RYMOdem, SXMOdem.
=== TOGGles ===
Default key: Alt-T
Description: Set various toggle parameters.
Example:
{toggles}
Open Set Toggles window.
=== UNMArk ===
Default key: none
Description: Unmark Dialing Directory entries.
Switches:
L1 or L
Unmark last-dialed entry only.
L0
Unmark all or listed entries (default).
Examples:
{unmark joes-bbs,file-city}
Unmark listed entries.
-87-
{unmark}
Unmark all entries.
{unmark-L}
Unmark last-dialed entry.
NOTE: When the "L" switch is present, any Dialing Strings listed will be
ignored.
Dialing Strings may be separated by spaces or commas.
{COMMO} will search the Dialing Directory for each string and unmark the
first entry where a match is found. Case is ignored.
The strings may consist of any part of a Dialing Directory entry line
(including strings contained within curly braces), but must NOT contain any
spaces, commas or curly braces.
See also: DIAL, MARK.
=== VIDEo ===
Default key: none
Description: Change to an alternate hardware video mode.
Switches:
M1 or M
Change to the alternate display mode.
M0
Change back to the normal display mode.
Examples:
{video-m1}
Change to the alternate mode.
{video-m0}
Change back to the normal mode.
The "alternate" mode is defined by Setup File item {avm=}. The "normal"
mode is the mode in effect when you start {COMMO}.
=== VTCUr ===
Default key: none
Description: Define a VT102 cursor (arrow) key.
-88-
Example:
{vtcur ^[[A|^[OA}
Define up-arrow key strings.
The first string is sent when cursor mode is active; the second string is
sent when application mode is active (these modes are controlled by the
host).
The two strings must be separated by a "|". Use "^m" for carriage return
if necessary.
See also VTPAd.
=== VTPAd ===
Default key: none
Description: Define a VT102 keypad key.
Example:
{vtpad 5|^[Ou}
Define keypad "5" key strings.
The first string is sent when numeric mode is active; the second string is
sent when application mode is active (these modes are controlled by the
host).
The two strings must be separated by a "|". Use "^m" for carriage return
if necessary.
See also VTCUr.
=== WCLOse ===
Default key: none
Description: Close the write file.
Example:
{wclose}
No arguments.
NOTE: The write file will be closed automatically when the macro
terminates (STOP, EXIT, etc.).
See also WOPEn, WRITE.
-89-
=== WINDow ===
Default key: none
Description: Preserve window display.
Switches:
K1 or K
Do not allow the Terminal Screen to be restored when exiting from
a window.
K0
Allow the Terminal Screen to be restored when exiting from a
window (default).
Examples:
{window-k}
Don't restore the Terminal Screen.
{wind-k0}
Restore the Terminal Screen.
This function will prevent the Terminal Screen from being restored after a
window function exits. It is useful for making smooth, flicker-free
transitions between windows or for placing one pop-up window on top of
another.
The condition will remain active until either the "k0" switch is used or
the macro terminates.
=== WOPEn ===
Default key: none
Description: Open a file for writing.
Switches:
A1 or A
Open the file in "append" mode. New lines written to the file
will be added at the end. If the file doesn't exist, it will be
created.
A0
Open the file in "create" mode. If the file exists, it will be
erased (default).
-90-
Examples:
{wopen c:\bbs\file.txt}
Open the file in create mode.
{wopen-a c:\data\word.fil}
Open the file in append mode.
TIP on using WOPEn:
> Only one file may be opened for writing (and one for reading).
See also WRITe, WCLOse.
=== WRITe ===
Default key: none
Description: Write a string to the write file.
Examples:
{write %nextline}
Write the contents of the variable "nextline" to the write file.
{write}
Write a carriage return/linefeed only (blank line) to the file.
{write %num%> }
Write the contents of "num" followed by a ">" and a space.
TIPS on using WRITe:
> A file must be open for writing or a macro error will result.
> The string will be written as one line, terminated by a carriage
return/linefeed.
> Control character conversion is NOT performed on the write string.
> A macro error will result if the disk is full.
See also WOPEn, WCLOse
-91-
For APPENDICES see Part I, COMMO.DOC.